package com.approval.mapper;

import com.approval.entity.RolePermission;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色权限关联Mapper接口
 */
@Mapper
public interface RolePermissionMapper {
    
    /**
     * 插入角色权限关联
     */
    int insert(RolePermission rolePermission);
    
    /**
     * 根据ID删除角色权限关联
     */
    int deleteById(Long id);
    
    /**
     * 根据角色ID删除所有关联
     */
    int deleteByRoleId(Long roleId);
    
    /**
     * 根据权限ID删除所有关联
     */
    int deleteByPermissionId(Long permissionId);
    
    /**
     * 根据角色ID和权限ID删除关联
     */
    int deleteByRoleIdAndPermissionId(@Param("roleId") Long roleId, @Param("permissionId") Long permissionId);
    
    /**
     * 根据角色ID查询权限ID列表
     */
    List<Long> selectPermissionIdsByRoleId(Long roleId);
    
    /**
     * 根据权限ID查询角色ID列表
     */
    List<Long> selectRoleIdsByPermissionId(Long permissionId);
    
    /**
     * 统计权限下的角色数量
     */
    long countByPermissionId(Long permissionId);
    
    /**
     * 检查角色权限关联是否存在
     */
    boolean existsByRoleIdAndPermissionId(@Param("roleId") Long roleId, @Param("permissionId") Long permissionId);
}
